home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / QuickTime / QuickTime 3 Interfaces & Libs / QTDevWin / CIncludes / MacMemory.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-21  |  31.1 KB  |  840 lines  |  [TEXT/dosa]

  1. /*
  2.      File:        MacMemory.h
  3.  
  4.      Contains:    Memory Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    QuickTime 3.0
  8.  
  9.      Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __MACMEMORY__
  19. #define __MACMEMORY__
  20.  
  21.  
  22. #ifndef __MACTYPES__
  23. #include <MacTypes.h>
  24. #endif
  25. #ifndef __MIXEDMODE__
  26. #include <MixedMode.h>
  27. #endif
  28.  
  29.  
  30.  
  31. #if PRAGMA_ONCE
  32. #pragma once
  33. #endif
  34.  
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38.  
  39. #if PRAGMA_IMPORT
  40. #pragma import on
  41. #endif
  42.  
  43. #if PRAGMA_STRUCT_ALIGN
  44.     #pragma options align=mac68k
  45. #elif PRAGMA_STRUCT_PACKPUSH
  46.     #pragma pack(push, 2)
  47. #elif PRAGMA_STRUCT_PACK
  48.     #pragma pack(2)
  49. #endif
  50.  
  51.  
  52.  
  53. enum {
  54.     maxSize                        = 0x00800000                    /*Max data block size is 8 megabytes*/
  55. };
  56.  
  57.  
  58. enum {
  59.     defaultPhysicalEntryCount    = 8
  60. };
  61.  
  62.  
  63. enum {
  64.                                                                 /* values returned from the GetPageState function */
  65.     kPageInMemory                = 0,
  66.     kPageOnDisk                    = 1,
  67.     kNotPaged                    = 2
  68. };
  69.  
  70.  
  71. enum {
  72.                                                                 /* masks for Zone->heapType field */
  73.     k32BitHeap                    = 1,                            /* valid in all Memory Managers */
  74.     kNewStyleHeap                = 2,                            /* true if new Heap Manager is present */
  75.     kNewDebugHeap                = 4                                /* true if new Heap Manager is running in debug mode on this heap */
  76. };
  77.  
  78. /* Note: The type "Size" moved to Types.h */
  79.  
  80.  
  81. typedef CALLBACK_API( long , GrowZoneProcPtr )(Size cbNeeded);
  82. typedef CALLBACK_API( void , PurgeProcPtr )(Handle blockToPurge);
  83. typedef CALLBACK_API( void , UserFnProcPtr )(void *parameter);
  84. /*
  85.     WARNING: UserFnProcPtr uses register based parameters under classic 68k
  86.              and cannot be written in a high-level language without 
  87.              the help of mixed mode or assembly glue.
  88. */
  89. typedef STACK_UPP_TYPE(GrowZoneProcPtr)                         GrowZoneUPP;
  90. typedef STACK_UPP_TYPE(PurgeProcPtr)                             PurgeUPP;
  91. typedef REGISTER_UPP_TYPE(UserFnProcPtr)                         UserFnUPP;
  92.  
  93. struct Zone {
  94.     Ptr                             bkLim;
  95.     Ptr                             purgePtr;
  96.     Ptr                             hFstFree;
  97.     long                             zcbFree;
  98.     GrowZoneUPP                     gzProc;
  99.     short                             moreMast;
  100.     short                             flags;
  101.     short                             cntRel;
  102.     short                             maxRel;
  103.     short                             cntNRel;
  104.     SInt8                             heapType;                    /* previously "maxNRel", now holds flags (e.g. k32BitHeap)*/
  105.     SInt8                             unused;
  106.     short                             cntEmpty;
  107.     short                             cntHandles;
  108.     long                             minCBFree;
  109.     PurgeUPP                         purgeProc;
  110.     Ptr                             sparePtr;
  111.     Ptr                             allocPtr;
  112.     short                             heapData;
  113. };
  114. typedef struct Zone                        Zone;
  115.  
  116. typedef Zone *                            THz;
  117.  
  118. struct MemoryBlock {
  119.     void *                            address;
  120.     unsigned long                     count;
  121. };
  122. typedef struct MemoryBlock                MemoryBlock;
  123.  
  124. struct LogicalToPhysicalTable {
  125.     MemoryBlock                     logical;
  126.     MemoryBlock                     physical[8];
  127. };
  128. typedef struct LogicalToPhysicalTable    LogicalToPhysicalTable;
  129.  
  130. typedef short                             PageState;
  131. typedef short                             StatusRegisterContents;
  132. enum { uppGrowZoneProcInfo = 0x000000F0 };                         /* pascal 4_bytes Func(4_bytes) */
  133. enum { uppPurgeProcInfo = 0x000000C0 };                         /* pascal no_return_value Func(4_bytes) */
  134. enum { uppUserFnProcInfo = 0x00009802 };                         /* register no_return_value Func(4_bytes:A0) */
  135. #define NewGrowZoneProc(userRoutine)                             (GrowZoneUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppGrowZoneProcInfo, GetCurrentArchitecture())
  136. #define NewPurgeProc(userRoutine)                                 (PurgeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPurgeProcInfo, GetCurrentArchitecture())
  137. #define NewUserFnProc(userRoutine)                                 (UserFnUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppUserFnProcInfo, GetCurrentArchitecture())
  138. #define CallGrowZoneProc(userRoutine, cbNeeded)                 CALL_ONE_PARAMETER_UPP((userRoutine), uppGrowZoneProcInfo, (cbNeeded))
  139. #define CallPurgeProc(userRoutine, blockToPurge)                 CALL_ONE_PARAMETER_UPP((userRoutine), uppPurgeProcInfo, (blockToPurge))
  140. #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  141.     #pragma parameter CallUserFnProc(__A1, __A0)
  142.     void CallUserFnProc(UserFnUPP routine, void * parameter) = 0x4E91;
  143. #else
  144.     #define CallUserFnProc(userRoutine, parameter)                 CALL_ONE_PARAMETER_UPP((userRoutine), uppUserFnProcInfo, (parameter))
  145. #endif
  146.  
  147.  
  148. EXTERN_API( Ptr )
  149. GetApplLimit                    (void)                                                        TWOWORDINLINE(0x2EB8, 0x0130);
  150.  
  151. EXTERN_API( THz )
  152. SystemZone                        (void)                                                        TWOWORDINLINE(0x2EB8, 0x02A6);
  153.  
  154. EXTERN_API( THz )
  155. ApplicationZone                    (void)                                                        TWOWORDINLINE(0x2EB8, 0x02AA);
  156.  
  157. EXTERN_API( Handle )
  158. GZSaveHnd                        (void)                                                        TWOWORDINLINE(0x2EB8, 0x0328);
  159.  
  160. EXTERN_API( Ptr )
  161. TopMem                            (void)                                                        TWOWORDINLINE(0x2EB8, 0x0108);
  162.  
  163. EXTERN_API( OSErr )
  164. MemError                        (void)                                                        TWOWORDINLINE(0x3EB8, 0x0220);
  165.  
  166.  
  167.  
  168.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  169.                                                                                             #pragma parameter __A0 GetZone
  170.                                                                                             #endif
  171. EXTERN_API( THz )
  172. GetZone                            (void)                                                        ONEWORDINLINE(0xA11A);
  173.  
  174.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  175.                                                                                             #pragma parameter __A0 NewHandle(__D0)
  176.                                                                                             #endif
  177. EXTERN_API( Handle )
  178. NewHandle                        (Size                     byteCount)                            ONEWORDINLINE(0xA122);
  179.  
  180.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  181.                                                                                             #pragma parameter __A0 NewHandleSys(__D0)
  182.                                                                                             #endif
  183. EXTERN_API( Handle )
  184. NewHandleSys                    (Size                     byteCount)                            ONEWORDINLINE(0xA522);
  185.  
  186.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  187.                                                                                             #pragma parameter __A0 NewHandleClear(__D0)
  188.                                                                                             #endif
  189. EXTERN_API( Handle )
  190. NewHandleClear                    (Size                     byteCount)                            ONEWORDINLINE(0xA322);
  191.  
  192.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  193.                                                                                             #pragma parameter __A0 NewHandleSysClear(__D0)
  194.                                                                                             #endif
  195. EXTERN_API( Handle )
  196. NewHandleSysClear                (Size                     byteCount)                            ONEWORDINLINE(0xA722);
  197.  
  198.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  199.                                                                                             #pragma parameter __A0 HandleZone(__A0)
  200.                                                                                             #endif
  201. EXTERN_API( THz )
  202. HandleZone                        (Handle                 h)                                    ONEWORDINLINE(0xA126);
  203.  
  204.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  205.                                                                                             #pragma parameter __A0 RecoverHandle(__A0)
  206.                                                                                             #endif
  207. EXTERN_API( Handle )
  208. RecoverHandle                    (Ptr                     p)                                    ONEWORDINLINE(0xA128);
  209.  
  210.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  211.                                                                                             #pragma parameter __A0 RecoverHandleSys(__A0)
  212.                                                                                             #endif
  213. EXTERN_API( Handle )
  214. RecoverHandleSys                (Ptr                     p)                                    ONEWORDINLINE(0xA528);
  215.  
  216.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  217.                                                                                             #pragma parameter __A0 NewPtr(__D0)
  218.                                                                                             #endif
  219. EXTERN_API( Ptr )
  220. NewPtr                            (Size                     byteCount)                            ONEWORDINLINE(0xA11E);
  221.  
  222.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  223.                                                                                             #pragma parameter __A0 NewPtrSys(__D0)
  224.                                                                                             #endif
  225. EXTERN_API( Ptr )
  226. NewPtrSys                        (Size                     byteCount)                            ONEWORDINLINE(0xA51E);
  227.  
  228.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  229.                                                                                             #pragma parameter __A0 NewPtrClear(__D0)
  230.                                                                                             #endif
  231. EXTERN_API( Ptr )
  232. NewPtrClear                        (Size                     byteCount)                            ONEWORDINLINE(0xA31E);
  233.  
  234.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  235.                                                                                             #pragma parameter __A0 NewPtrSysClear(__D0)
  236.                                                                                             #endif
  237. EXTERN_API( Ptr )
  238. NewPtrSysClear                    (Size                     byteCount)                            ONEWORDINLINE(0xA71E);
  239.  
  240.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  241.                                                                                             #pragma parameter __A0 PtrZone(__A0)
  242.                                                                                             #endif
  243. EXTERN_API( THz )
  244. PtrZone                            (Ptr                     p)                                    ONEWORDINLINE(0xA148);
  245.  
  246.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  247.                                                                                             #pragma parameter __D0 MaxBlock
  248.                                                                                             #endif
  249. EXTERN_API( long )
  250. MaxBlock                        (void)                                                        ONEWORDINLINE(0xA061);
  251.  
  252.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  253.                                                                                             #pragma parameter __D0 MaxBlockSys
  254.                                                                                             #endif
  255. EXTERN_API( long )
  256. MaxBlockSys                        (void)                                                        ONEWORDINLINE(0xA461);
  257.  
  258.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  259.                                                                                             #pragma parameter __D0 StackSpace
  260.                                                                                             #endif
  261. EXTERN_API( long )
  262. StackSpace                        (void)                                                        ONEWORDINLINE(0xA065);
  263.  
  264.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  265.                                                                                             #pragma parameter __A0 NewEmptyHandle
  266.                                                                                             #endif
  267. EXTERN_API( Handle )
  268. NewEmptyHandle                    (void)                                                        ONEWORDINLINE(0xA166);
  269.  
  270.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  271.                                                                                             #pragma parameter __A0 NewEmptyHandleSys
  272.                                                                                             #endif
  273. EXTERN_API( Handle )
  274. NewEmptyHandleSys                (void)                                                        ONEWORDINLINE(0xA566);
  275.  
  276.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  277.                                                                                             #pragma parameter HLock(__A0)
  278.                                                                                             #endif
  279. EXTERN_API( void )
  280. HLock                            (Handle                 h)                                    ONEWORDINLINE(0xA029);
  281.  
  282.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  283.                                                                                             #pragma parameter HUnlock(__A0)
  284.                                                                                             #endif
  285. EXTERN_API( void )
  286. HUnlock                            (Handle                 h)                                    ONEWORDINLINE(0xA02A);
  287.  
  288.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  289.                                                                                             #pragma parameter HPurge(__A0)
  290.                                                                                             #endif
  291. EXTERN_API( void )
  292. HPurge                            (Handle                 h)                                    ONEWORDINLINE(0xA049);
  293.  
  294.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  295.                                                                                             #pragma parameter HNoPurge(__A0)
  296.                                                                                             #endif
  297. EXTERN_API( void )
  298. HNoPurge                        (Handle                 h)                                    ONEWORDINLINE(0xA04A);
  299.  
  300.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  301.                                                                                             #pragma parameter HLockHi(__A0)
  302.                                                                                             #endif
  303. EXTERN_API( void )
  304. HLockHi                            (Handle                 h)                                    TWOWORDINLINE(0xA064, 0xA029);
  305.  
  306. EXTERN_API( Handle )
  307. TempNewHandle                    (Size                     logicalSize,
  308.                                  OSErr *                resultCode)                            THREEWORDINLINE(0x3F3C, 0x001D, 0xA88F);
  309.  
  310. EXTERN_API( Size )
  311. TempMaxMem                        (Size *                    grow)                                THREEWORDINLINE(0x3F3C, 0x0015, 0xA88F);
  312.  
  313. EXTERN_API( long )
  314. TempFreeMem                        (void)                                                        THREEWORDINLINE(0x3F3C, 0x0018, 0xA88F);
  315.  
  316. EXTERN_API( void )
  317. InitZone                        (GrowZoneUPP             pgrowZone,
  318.                                  short                     cmoreMasters,
  319.                                  void *                    limitPtr,
  320.                                  void *                    startPtr);
  321.  
  322.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  323.                                                                                             #pragma parameter SetZone(__A0)
  324.                                                                                             #endif
  325. EXTERN_API( void )
  326. SetZone                            (THz                     hz)                                    ONEWORDINLINE(0xA01B);
  327.  
  328.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  329.                                                                                             #pragma parameter __D0 CompactMem(__D0)
  330.                                                                                             #endif
  331. EXTERN_API( Size )
  332. CompactMem                        (Size                     cbNeeded)                            ONEWORDINLINE(0xA04C);
  333.  
  334.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  335.                                                                                             #pragma parameter __D0 CompactMemSys(__D0)
  336.                                                                                             #endif
  337. EXTERN_API( Size )
  338. CompactMemSys                    (Size                     cbNeeded)                            ONEWORDINLINE(0xA44C);
  339.  
  340.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  341.                                                                                             #pragma parameter PurgeMem(__D0)
  342.                                                                                             #endif
  343. EXTERN_API( void )
  344. PurgeMem                        (Size                     cbNeeded)                            ONEWORDINLINE(0xA04D);
  345.  
  346.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  347.                                                                                             #pragma parameter PurgeMemSys(__D0)
  348.                                                                                             #endif
  349. EXTERN_API( void )
  350. PurgeMemSys                        (Size                     cbNeeded)                            ONEWORDINLINE(0xA44D);
  351.  
  352.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  353.                                                                                             #pragma parameter __D0 FreeMem
  354.                                                                                             #endif
  355. EXTERN_API( long )
  356. FreeMem                            (void)                                                        ONEWORDINLINE(0xA01C);
  357.  
  358.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  359.                                                                                             #pragma parameter __D0 FreeMemSys
  360.                                                                                             #endif
  361. EXTERN_API( long )
  362. FreeMemSys                        (void)                                                        ONEWORDINLINE(0xA41C);
  363.  
  364.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  365.                                                                                             #pragma parameter ReserveMem(__D0)
  366.                                                                                             #endif
  367. EXTERN_API( void )
  368. ReserveMem                        (Size                     cbNeeded)                            ONEWORDINLINE(0xA040);
  369.  
  370.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  371.                                                                                             #pragma parameter ReserveMemSys(__D0)
  372.                                                                                             #endif
  373. EXTERN_API( void )
  374. ReserveMemSys                    (Size                     cbNeeded)                            ONEWORDINLINE(0xA440);
  375.  
  376.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  377.                                                                                             #pragma parameter __D0 MaxMem(__A1)
  378.                                                                                             #endif
  379. EXTERN_API( Size )
  380. MaxMem                            (Size *                    grow)                                TWOWORDINLINE(0xA11D, 0x2288);
  381.  
  382.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  383.                                                                                             #pragma parameter __D0 MaxMemSys(__A1)
  384.                                                                                             #endif
  385. EXTERN_API( Size )
  386. MaxMemSys                        (Size *                    grow)                                TWOWORDINLINE(0xA51D, 0x2288);
  387.  
  388.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  389.                                                                                             #pragma parameter SetGrowZone(__A0)
  390.                                                                                             #endif
  391. EXTERN_API( void )
  392. SetGrowZone                        (GrowZoneUPP             growZone)                            ONEWORDINLINE(0xA04B);
  393.  
  394.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  395.                                                                                             #pragma parameter MoveHHi(__A0)
  396.                                                                                             #endif
  397. EXTERN_API( void )
  398. MoveHHi                            (Handle                 h)                                    ONEWORDINLINE(0xA064);
  399.  
  400.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  401.                                                                                             #pragma parameter DisposePtr(__A0)
  402.                                                                                             #endif
  403. EXTERN_API( void )
  404. DisposePtr                        (Ptr                     p)                                    ONEWORDINLINE(0xA01F);
  405.  
  406. EXTERN_API( Size )
  407. GetPtrSize                        (Ptr                     p);
  408.  
  409.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  410.                                                                                             #pragma parameter SetPtrSize(__A0, __D0)
  411.                                                                                             #endif
  412. EXTERN_API( void )
  413. SetPtrSize                        (Ptr                     p,
  414.                                  Size                     newSize)                            ONEWORDINLINE(0xA020);
  415.  
  416.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  417.                                                                                             #pragma parameter DisposeHandle(__A0)
  418.                                                                                             #endif
  419. EXTERN_API( void )
  420. DisposeHandle                    (Handle                 h)                                    ONEWORDINLINE(0xA023);
  421.  
  422.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  423.                                                                                             #pragma parameter SetHandleSize(__A0, __D0)
  424.                                                                                             #endif
  425. EXTERN_API( void )
  426. SetHandleSize                    (Handle                 h,
  427.                                  Size                     newSize)                            ONEWORDINLINE(0xA024);
  428.  
  429. /* 
  430.     NOTE
  431.     
  432.     GetHandleSize and GetPtrSize are documented in Inside Mac as returning 0 
  433.     in case of an error, but the traps actually return an error code in D0.
  434.     The glue sets D0 to 0 if an error occured.
  435. */
  436. EXTERN_API( Size )
  437. GetHandleSize                    (Handle                 h);
  438.  
  439.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  440.                                                                                             #pragma parameter __D0 InlineGetHandleSize(__A0)
  441.                                                                                             #endif
  442. EXTERN_API( Size )
  443. InlineGetHandleSize                (Handle                 h)                                    ONEWORDINLINE(0xA025);
  444.  
  445.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  446.                                                                                             #pragma parameter ReallocateHandle(__A0, __D0)
  447.                                                                                             #endif
  448. EXTERN_API( void )
  449. ReallocateHandle                (Handle                 h,
  450.                                  Size                     byteCount)                            ONEWORDINLINE(0xA027);
  451.  
  452.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  453.                                                                                             #pragma parameter ReallocateHandleSys(__A0, __D0)
  454.                                                                                             #endif
  455. EXTERN_API( void )
  456. ReallocateHandleSys                (Handle                 h,
  457.                                  Size                     byteCount)                            ONEWORDINLINE(0xA427);
  458.  
  459.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  460.                                                                                             #pragma parameter EmptyHandle(__A0)
  461.                                                                                             #endif
  462. EXTERN_API( void )
  463. EmptyHandle                        (Handle                 h)                                    ONEWORDINLINE(0xA02B);
  464.  
  465.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  466.                                                                                             #pragma parameter HSetRBit(__A0)
  467.                                                                                             #endif
  468. EXTERN_API( void )
  469. HSetRBit                        (Handle                 h)                                    ONEWORDINLINE(0xA067);
  470.  
  471.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  472.                                                                                             #pragma parameter HClrRBit(__A0)
  473.                                                                                             #endif
  474. EXTERN_API( void )
  475. HClrRBit                        (Handle                 h)                                    ONEWORDINLINE(0xA068);
  476.  
  477.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  478.                                                                                             #pragma parameter __D0 HGetState(__A0)
  479.                                                                                             #endif
  480. EXTERN_API( SInt8 )
  481. HGetState                        (Handle                 h)                                    ONEWORDINLINE(0xA069);
  482.  
  483.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  484.                                                                                             #pragma parameter HSetState(__A0, __D0)
  485.                                                                                             #endif
  486. EXTERN_API( void )
  487. HSetState                        (Handle                 h,
  488.                                  SInt8                     flags)                                ONEWORDINLINE(0xA06A);
  489.  
  490. EXTERN_API( void )
  491. PurgeSpace                        (long *                    total,
  492.                                  long *                    contig);
  493.  
  494. #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  495. /*
  496.     PurgeSpaceTotal and PurgeSpaceContiguous are currently only implement
  497.     on classic 68K.  The are the same as PurgeSpace() but return just
  498.     one value (either total space purgable or contiguous space purgable).
  499. */
  500.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  501.                                                                                             #pragma parameter __A0 PurgeSpaceTotal
  502.                                                                                             #endif
  503. EXTERN_API( long )
  504. PurgeSpaceTotal                    (void)                                                        ONEWORDINLINE(0xA062);
  505.  
  506.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  507.                                                                                             #pragma parameter __D0 PurgeSpaceContiguous
  508.                                                                                             #endif
  509. EXTERN_API( long )
  510. PurgeSpaceContiguous            (void)                                                        ONEWORDINLINE(0xA062);
  511.  
  512.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  513.                                                                                             #pragma parameter __A0 PurgeSpaceSysTotal
  514.                                                                                             #endif
  515. EXTERN_API( long )
  516. PurgeSpaceSysTotal                (void)                                                        ONEWORDINLINE(0xA562);
  517.  
  518.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  519.                                                                                             #pragma parameter __D0 PurgeSpaceSysContiguous
  520.                                                                                             #endif
  521. EXTERN_API( long )
  522. PurgeSpaceSysContiguous            (void)                                                        ONEWORDINLINE(0xA562);
  523.  
  524. #endif  /* TARGET_OS_MAC && TARGET_CPU_68K &&  !TARGET_RT_MAC_CFM */
  525.  
  526. /*****************************************************************************
  527.  
  528.     The routines: 
  529.  
  530.         BlockMoveUncached
  531.         BlockMoveDataUncached
  532.         BlockZero
  533.         BlockZeroUncached
  534.     
  535.     are intended for developers writing drivers. They do not exist in 
  536.     “InterfaceLib.” You must link with “DriverServicesLib” to access them.
  537.     
  538.     But since BlockMove and BlockMoveData exist in both “InterfaceLib” and
  539.     “DriverServicesLib”, you cannot link with both libraries.
  540.     
  541. *****************************************************************************/
  542.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  543.                                                                                             #pragma parameter BlockMove(__A0, __A1, __D0)
  544.                                                                                             #endif
  545. EXTERN_API( void )
  546. BlockMove                        (const void *            srcPtr,
  547.                                  void *                    destPtr,
  548.                                  Size                     byteCount)                            ONEWORDINLINE(0xA02E);
  549.  
  550.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  551.                                                                                             #pragma parameter BlockMoveData(__A0, __A1, __D0)
  552.                                                                                             #endif
  553. EXTERN_API( void )
  554. BlockMoveData                    (const void *            srcPtr,
  555.                                  void *                    destPtr,
  556.                                  Size                     byteCount)                            ONEWORDINLINE(0xA22E);
  557.  
  558. EXTERN_API_C( void )
  559. BlockMoveUncached                (const void *            srcPtr,
  560.                                  void *                    destPtr,
  561.                                  Size                     byteCount);
  562.  
  563. EXTERN_API_C( void )
  564. BlockMoveDataUncached            (const void *            srcPtr,
  565.                                  void *                    destPtr,
  566.                                  Size                     byteCount);
  567.  
  568. EXTERN_API_C( void )
  569. BlockZero                        (void *                    destPtr,
  570.                                  Size                     byteCount);
  571.  
  572. EXTERN_API_C( void )
  573. BlockZeroUncached                (void *                    destPtr,
  574.                                  Size                     byteCount);
  575.  
  576.  
  577. EXTERN_API( void )
  578. MaxApplZone                        (void)                                                        ONEWORDINLINE(0xA063);
  579.  
  580.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  581.                                                                                             #pragma parameter SetApplBase(__A0)
  582.                                                                                             #endif
  583. EXTERN_API( void )
  584. SetApplBase                        (void *                    startPtr)                            ONEWORDINLINE(0xA057);
  585.  
  586. EXTERN_API( void )
  587. MoreMasters                        (void)                                                        ONEWORDINLINE(0xA036);
  588.  
  589.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  590.                                                                                             #pragma parameter SetApplLimit(__A0)
  591.                                                                                             #endif
  592. EXTERN_API( void )
  593. SetApplLimit                    (void *                    zoneLimit)                            ONEWORDINLINE(0xA02D);
  594.  
  595.  
  596.  
  597. EXTERN_API( void )
  598. InitApplZone                    (void)                                                        ONEWORDINLINE(0xA02C);
  599.  
  600.  
  601. /*  Temporary Memory routines renamed, but obsolete, in System 7.0 and later.  */
  602. EXTERN_API( void )
  603. TempHLock                        (Handle                 h,
  604.                                  OSErr *                resultCode)                            THREEWORDINLINE(0x3F3C, 0x001E, 0xA88F);
  605.  
  606. EXTERN_API( void )
  607. TempHUnlock                        (Handle                 h,
  608.                                  OSErr *                resultCode)                            THREEWORDINLINE(0x3F3C, 0x001F, 0xA88F);
  609.  
  610. EXTERN_API( void )
  611. TempDisposeHandle                (Handle                 h,
  612.                                  OSErr *                resultCode)                            THREEWORDINLINE(0x3F3C, 0x0020, 0xA88F);
  613.  
  614. EXTERN_API( Ptr )
  615. TempTopMem                        (void)                                                        THREEWORDINLINE(0x3F3C, 0x0016, 0xA88F);
  616.  
  617.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  618.                                                                                             #pragma parameter __D0 HoldMemory(__A0, __A1)
  619.                                                                                             #endif
  620. EXTERN_API( OSErr )
  621. HoldMemory                        (void *                    address,
  622.                                  unsigned long             count)                                TWOWORDINLINE(0x7000, 0xA05C);
  623.  
  624.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  625.                                                                                             #pragma parameter __D0 UnholdMemory(__A0, __A1)
  626.                                                                                             #endif
  627. EXTERN_API( OSErr )
  628. UnholdMemory                    (void *                    address,
  629.                                  unsigned long             count)                                TWOWORDINLINE(0x7001, 0xA05C);
  630.  
  631.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  632.                                                                                             #pragma parameter __D0 LockMemory(__A0, __A1)
  633.                                                                                             #endif
  634. EXTERN_API( OSErr )
  635. LockMemory                        (void *                    address,
  636.                                  unsigned long             count)                                TWOWORDINLINE(0x7002, 0xA05C);
  637.  
  638.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  639.                                                                                             #pragma parameter __D0 LockMemoryForOutput(__A0, __A1)
  640.                                                                                             #endif
  641. EXTERN_API( OSErr )
  642. LockMemoryForOutput                (void *                    address,
  643.                                  unsigned long             count)                                TWOWORDINLINE(0x700A, 0xA05C);
  644.  
  645.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  646.                                                                                             #pragma parameter __D0 LockMemoryContiguous(__A0, __A1)
  647.                                                                                             #endif
  648. EXTERN_API( OSErr )
  649. LockMemoryContiguous            (void *                    address,
  650.                                  unsigned long             count)                                TWOWORDINLINE(0x7004, 0xA05C);
  651.  
  652.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  653.                                                                                             #pragma parameter __D0 UnlockMemory(__A0, __A1)
  654.                                                                                             #endif
  655. EXTERN_API( OSErr )
  656. UnlockMemory                    (void *                    address,
  657.                                  unsigned long             count)                                TWOWORDINLINE(0x7003, 0xA05C);
  658.  
  659.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  660.                                                                                             #pragma parameter __D0 MakeMemoryResident(__A0, __A1)
  661.                                                                                             #endif
  662. EXTERN_API( OSErr )
  663. MakeMemoryResident                (void *                    address,
  664.                                  unsigned long             count)                                TWOWORDINLINE(0x700B, 0xA05C);
  665.  
  666.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  667.                                                                                             #pragma parameter __D0 ReleaseMemoryData(__A0, __A1)
  668.                                                                                             #endif
  669. EXTERN_API( OSErr )
  670. ReleaseMemoryData                (void *                    address,
  671.                                  unsigned long             count)                                TWOWORDINLINE(0x700C, 0xA05C);
  672.  
  673.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  674.                                                                                             #pragma parameter __D0 MakeMemoryNonResident(__A0, __A1)
  675.                                                                                             #endif
  676. EXTERN_API( OSErr )
  677. MakeMemoryNonResident            (void *                    address,
  678.                                  unsigned long             count)                                TWOWORDINLINE(0x700D, 0xA05C);
  679.  
  680.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  681.                                                                                             #pragma parameter __D0 FlushMemory(__A0, __A1)
  682.                                                                                             #endif
  683. EXTERN_API( OSErr )
  684. FlushMemory                        (void *                    address,
  685.                                  unsigned long             count)                                TWOWORDINLINE(0x700E, 0xA05C);
  686.  
  687. EXTERN_API( OSErr )
  688. GetPhysical                        (LogicalToPhysicalTable * addresses,
  689.                                  unsigned long *        physicalEntryCount);
  690.  
  691.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  692.                                                                                             #pragma parameter __D0 DeferUserFn(__A0, __D0)
  693.                                                                                             #endif
  694. EXTERN_API( OSErr )
  695. DeferUserFn                        (UserFnUPP                 userFunction,
  696.                                  void *                    argument)                            ONEWORDINLINE(0xA08F);
  697.  
  698.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  699.                                                                                             #pragma parameter __D0 DebuggerGetMax
  700.                                                                                             #endif
  701. EXTERN_API( long )
  702. DebuggerGetMax                    (void)                                                        TWOWORDINLINE(0x7000, 0xA08D);
  703.  
  704. EXTERN_API( void )
  705. DebuggerEnter                    (void)                                                        TWOWORDINLINE(0x7001, 0xA08D);
  706.  
  707. EXTERN_API( void )
  708. DebuggerExit                    (void)                                                        TWOWORDINLINE(0x7002, 0xA08D);
  709.  
  710. EXTERN_API( void )
  711. DebuggerPoll                    (void)                                                        TWOWORDINLINE(0x7003, 0xA08D);
  712.  
  713.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  714.                                                                                             #pragma parameter __D0 GetPageState(__A0)
  715.                                                                                             #endif
  716. EXTERN_API( PageState )
  717. GetPageState                    (const void *            address)                            TWOWORDINLINE(0x7004, 0xA08D);
  718.  
  719.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  720.                                                                                             #pragma parameter __D0 PageFaultFatal
  721.                                                                                             #endif
  722. EXTERN_API( Boolean )
  723. PageFaultFatal                    (void)                                                        TWOWORDINLINE(0x7005, 0xA08D);
  724.  
  725.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  726.                                                                                             #pragma parameter __D0 DebuggerLockMemory(__A0, __A1)
  727.                                                                                             #endif
  728. EXTERN_API( OSErr )
  729. DebuggerLockMemory                (void *                    address,
  730.                                  unsigned long             count)                                TWOWORDINLINE(0x7006, 0xA08D);
  731.  
  732.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  733.                                                                                             #pragma parameter __D0 DebuggerUnlockMemory(__A0, __A1)
  734.                                                                                             #endif
  735. EXTERN_API( OSErr )
  736. DebuggerUnlockMemory            (void *                    address,
  737.                                  unsigned long             count)                                TWOWORDINLINE(0x7007, 0xA08D);
  738.  
  739.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  740.                                                                                             #pragma parameter __D0 EnterSupervisorMode
  741.                                                                                             #endif
  742. EXTERN_API( StatusRegisterContents )
  743. EnterSupervisorMode                (void)                                                        TWOWORDINLINE(0x7008, 0xA08D);
  744.  
  745.  
  746. /* 
  747.     StripAddress and Translate24To32 are traps on classic 68K,
  748.     but macro to the identity function on PowerMacs or other OS's.
  749. */
  750. #if TARGET_OS_MAC && TARGET_CPU_68K
  751.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  752.                                                                                             #pragma parameter __D0 StripAddress(__D0)
  753.                                                                                             #endif
  754. EXTERN_API( Ptr )
  755. StripAddress                    (void *                    theAddress)                            ONEWORDINLINE(0xA055);
  756.  
  757. #else
  758. #define StripAddress(x)       ((Ptr)(x))
  759. #endif  /* TARGET_OS_MAC && TARGET_CPU_68K */
  760.  
  761.  
  762. #if TARGET_OS_MAC && TARGET_CPU_68K
  763.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  764.                                                                                             #pragma parameter __D0 Translate24To32(__D0)
  765.                                                                                             #endif
  766. EXTERN_API( Ptr )
  767. Translate24To32                    (void *                    addr24)                                ONEWORDINLINE(0xA091);
  768.  
  769. #else
  770. #define Translate24To32(x)  ((Ptr)(x))
  771. #endif  /* TARGET_OS_MAC && TARGET_CPU_68K */
  772.  
  773. EXTERN_API( OSErr )
  774. HandToHand                        (Handle *                theHndl);
  775.  
  776.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  777.                                                                                             #pragma parameter __D0 PtrToXHand(__A0, __A1, __D0)
  778.                                                                                             #endif
  779. EXTERN_API( OSErr )
  780. PtrToXHand                        (const void *            srcPtr,
  781.                                  Handle                 dstHndl,
  782.                                  long                     size)                                ONEWORDINLINE(0xA9E2);
  783.  
  784. EXTERN_API( OSErr )
  785. PtrToHand                        (const void *            srcPtr,
  786.                                  Handle *                dstHndl,
  787.                                  long                     size);
  788.  
  789.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  790.                                                                                             #pragma parameter __D0 HandAndHand(__A0, __A1)
  791.                                                                                             #endif
  792. EXTERN_API( OSErr )
  793. HandAndHand                        (Handle                 hand1,
  794.                                  Handle                 hand2)                                ONEWORDINLINE(0xA9E4);
  795.  
  796.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  797.                                                                                             #pragma parameter __D0 PtrAndHand(__A0, __A1, __D0)
  798.                                                                                             #endif
  799. EXTERN_API( OSErr )
  800. PtrAndHand                        (const void *            ptr1,
  801.                                  Handle                 hand2,
  802.                                  long                     size)                                ONEWORDINLINE(0xA9EF);
  803.  
  804. #if OLDROUTINENAMES
  805. #define ApplicZone() ApplicationZone()
  806. #define MFTempNewHandle(logicalSize, resultCode) TempNewHandle(logicalSize, resultCode)
  807. #define MFMaxMem(grow) TempMaxMem(grow)
  808. #define MFFreeMem() TempFreeMem()
  809. #define MFTempHLock(h, resultCode) TempHLock(h, resultCode)
  810. #define MFTempHUnlock(h, resultCode) TempHUnlock(h, resultCode)
  811. #define MFTempDisposHandle(h, resultCode) TempDisposeHandle(h, resultCode)
  812. #define MFTopMem() TempTopMem()
  813. #define ResrvMem(cbNeeded) ReserveMem(cbNeeded)
  814. #define DisposPtr(p) DisposePtr(p)
  815. #define DisposHandle(h) DisposeHandle(h)
  816. #define ReallocHandle(h, byteCount) ReallocateHandle(h, byteCount)
  817. #endif  /* OLDROUTINENAMES */
  818.  
  819.  
  820. #if PRAGMA_STRUCT_ALIGN
  821.     #pragma options align=reset
  822. #elif PRAGMA_STRUCT_PACKPUSH
  823.     #pragma pack(pop)
  824. #elif PRAGMA_STRUCT_PACK
  825.     #pragma pack()
  826. #endif
  827.  
  828. #ifdef PRAGMA_IMPORT_OFF
  829. #pragma import off
  830. #elif PRAGMA_IMPORT
  831. #pragma import reset
  832. #endif
  833.  
  834. #ifdef __cplusplus
  835. }
  836. #endif
  837.  
  838. #endif /* __MACMEMORY__ */
  839.  
  840.